package product;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.spzx.common.core.web.controller.BaseController;
import com.spzx.common.core.web.domain.BaseEntity;

public class GenMP {

    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://192.168.111.30:3306/spzx-product?characterEncoding=utf-8&useSSL=false", "root", "root")
                .globalConfig(builder -> builder
                        .author("xiongkunYang") // 设置作者名
                        .commentDate("yyyy/MM/dd HH:mm") //设置注释日期格式
                        .outputDir("D:/Users/Desktop") // 指定代码生成的输出目录
                        .dateType(DateType.ONLY_DATE) // 设置时间类型策略
                        .disableOpenDir() // 生成代码后是否直接打开资源管理器
                )
                .packageConfig(builder -> builder
                        .parent("com.spzx.product") // 设置父包名
                        .entity("domain") // 设置 Entity 包名
                        .mapper("mapper") // 设置 Mapper 包名
                        .xml("mapper.product") // 设置 Mapper XML 包名
                        .service("service") // 设置 Service 包名
                        .serviceImpl("service.impl") // 设置 Service Impl 包名
                        .controller("controller") // 设置 Controller 包名
                )
                .strategyConfig(builder -> builder
                                .addInclude(
                                        "brand",
                                        "category",
                                        "category_brand",
                                        "product",
                                        "product_details",
                                        "product_sku",
                                        "product_spec",
                                        "product_unit",
                                        "sku_stock") // 设置需要生成的表名

                                .entityBuilder() // 实体策略配置
                                .enableLombok() // 开启 Lombok 模型
                                .superClass(BaseEntity.class)  // 设置父类
                                .addSuperEntityColumns( // 添加父类公共字段
                                        "id",
                                        "create_by",
                                        "create_time",
                                        "update_by",
                                        "update_time",
                                        "remark",
                                        "del_flag")
                                //.addIgnoreColumns
                                .enableFileOverride() // 覆盖已生成文件

                                .serviceBuilder() // Service 策略配置
                                //.formatServiceFileName("I%sService")
                                .enableFileOverride()

                                .controllerBuilder() // Controller 策略配置
                                .superClass(BaseController.class) // 设置父类
                                .enableRestStyle() // 开启生成@RestController 控制器
                                .enableFileOverride()
                )
                .templateEngine(new FreemarkerTemplateEngine()) // 模板引擎
                .execute();
    }
}